package jrain.fw.core.cfg;

import jrain.utils.collection.RMap;

/**
 * <pre>
 * 作者：3244924214@qq.com 
 * 描述： 配置服务
 * </pre>
 */
public interface CfgService {

	/**
	 * 获取指定模块配置文件的内容
	 * @param module 模块
	 * @return 指定模块配置文件的内容
	 */
	public RMap<String, Object> getCfgMap(String module);

	/**
	 * 获取指定模块配置文件的内容
	 * @param module 模块
	 * @param defaultMap 默认值
	 * @return 指定模块配置文件的内容
	 */
	public RMap<String, Object> getCfgMap(String module, RMap<String, Object> defaultMap);

	/**
	 * 获取配置的值
	 * @param module 配置文件类型
	 * @param key 键
	 * @return 值
	 */
	public Object getCfgValue(String module, String key);

	/**
	 * 获取配置的值
	 * @param module 模块
	 * @param key 键
	 * @param dvalue 默认值
	 * @return 配置的值
	 */
	public Object getCfgValue(String module, String key, Object dvalue);

	/**
	 * 设置配置模块
	 * @param module 模块
	 * @param dataMap 配置数据
	 */
	public void setCfgValue(String module, RMap<String, Object> dataMap);

	/**
	 * 注册配置变更通知
	 * @param module 模块
	 * @param callback 回调函数
	 */
	public void registerCfgCallBack(String module, CfgCallback callback);

	/**
	 * 删除注册配置通知
	 * @param module 模块
	 */
	public void unregisterCfgCallBack(String module);

	/**
	 * 删除注册配置通知
	 * @param module 模块
	 * @param callback 回调函数
	 */
	public void unregisterCfgCallBack(String module, CfgCallback callback);
}